#!/usr/bin/env node

const { spawn } = require('child_process');
const fs = require('fs');
const path = require('path');

console.log('🔧 重新安装依赖包...\n');

// 删除现有的node_modules和lock文件
const cleanup = () => {
  console.log('🧹 清理现有依赖...');
  
  const nodeModulesPath = path.join(__dirname, 'node_modules');
  const packageLockPath = path.join(__dirname, 'package-lock.json');
  const yarnLockPath = path.join(__dirname, 'yarn.lock');
  
  try {
    if (fs.existsSync(nodeModulesPath)) {
      fs.rmSync(nodeModulesPath, { recursive: true, force: true });
      console.log('✅ 删除 node_modules');
    }
    
    if (fs.existsSync(packageLockPath)) {
      fs.unlinkSync(packageLockPath);
      console.log('✅ 删除 package-lock.json');
    }
    
    if (fs.existsSync(yarnLockPath)) {
      fs.unlinkSync(yarnLockPath);
      console.log('✅ 删除 yarn.lock');
    }
  } catch (error) {
    console.warn('⚠️  清理过程中出现警告:', error.message);
  }
};

// 安装依赖
const installDependencies = () => {
  return new Promise((resolve, reject) => {
    console.log('\n📦 安装依赖包...');
    
    const npm = spawn('npm', ['install', '--legacy-peer-deps'], {
      cwd: __dirname,
      stdio: 'inherit',
      shell: true
    });
    
    npm.on('close', (code) => {
      if (code === 0) {
        console.log('✅ 依赖安装成功');
        resolve();
      } else {
        console.error('❌ 依赖安装失败');
        reject(new Error(`npm install failed with code ${code}`));
      }
    });
    
    npm.on('error', (error) => {
      console.error('❌ 安装过程中出错:', error);
      reject(error);
    });
  });
};

// 主函数
const main = async () => {
  try {
    cleanup();
    await installDependencies();
    
    console.log('\n🎉 安装完成！');
    console.log('\n📋 下一步操作:');
    console.log('  1. 启动开发服务器: npm run dev');
    console.log('  2. 或者一键启动: npm start');
    console.log('\n💡 提示: 如果遇到问题，请检查 Node.js 版本是否 >= 16');
    
  } catch (error) {
    console.error('\n❌ 安装失败:', error.message);
    console.log('\n🔧 故障排除建议:');
    console.log('  1. 检查网络连接');
    console.log('  2. 清除 npm 缓存: npm cache clean --force');
    console.log('  3. 使用淘宝镜像: npm config set registry https://registry.npmmirror.com');
    console.log('  4. 检查 Node.js 版本: node --version');
    process.exit(1);
  }
};

// 运行主函数
main();
